<?php
/*******************************************************************************

    FinalsClub.org is a platform for students and faculty to collaborate
    and share their knowledge with the world.

    Copyright (C) 2009  Andrew Magliozzi
 
    This file is a part of FinalsClub.org.

    FinalsClub.org is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
    To contact FinalsClub.org, send an email to info@finalsclub.org, or
    send mail to Finals Club, c/o Veritas Tutors, 1132 Massachusetts Avenue,
    Cambridge, MA 02138.

*******************************************************************************/

class Comment extends BaseComment
{
	public function getMaterialObject(){
	/* In case comments are being displayed in a context other than a material (readings, notes, etc) display, in which case the material object for each comment would not readily be available */
		$type = $this->getType(); /* "Note" */
		$type_id = $this->getTypeId(); 
		if ($type == "note"){
			$material = NotePeer::retrieveByPk($type_id);
		}
		
		return $material;
	}
	
	public function save(PropelPDO $con = null) {
		$activity_feed = new ActivityFeed();
		
		$activity_feed->setUserId($this->getUserId());
		$activity_feed->setType("comment");
		
		// get the type of object that was commented on, attempt to instantiate and object and see if it has the getIspublic method
		$comment_type = $this->getType();
		$obj_class = ucwords($comment_type) . 'Peer';
		$obj = call_user_func(array($obj_class, 'retrieveByPK'), $this->getTypeId());
		if(method_exists($obj, 'getVisibility'))
			if($obj->getVisibility())		
				$activity_feed->setIspublic(true);	// if the object is public so is the feed
			else
				$activity_feed->setIspublic(false);
		else
			$activity_feed->setIspublic(true);		// default to public
		$activity_feed->setOwnerId($obj->getUserId());
			
		$activity_feed->setMessage("<strong>commented on</strong>");	// the rest of the message will be constructed by the renderFeeds helper
		
		parent::save();
		
		$activity_feed->setTypeId($this->getId());
		$activity_feed->save();
	}
}
